# !/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
@作者 杨阳
@时间 2018-06-01
@说明 第三方框架初始化工具类
@注意事项
"""

import redis
from apscheduler.schedulers.background import BackgroundScheduler
from flask_cors import CORS
from flask_login import LoginManager
from flask_sqlalchemy import SQLAlchemy

from settings import REDIS_HOST, SQLALCHEMY_DATABASE_URI

####################################配置flask_login揷件################################
login_manager = LoginManager()
# 可以设置None,'basic','strong'  以提供不同的安全等级,一般设置strong,如果发现异常会登出用户
login_manager.session_protection = "strong"
# 用户没有登录出现的提示
login_manager.login_message = "请登录后访问"
# 这里填写你的登陆界面的路由
login_manager.login_view = "/"
####################################配置flask_cors揷件################################
cors = CORS()

####################################配置redis################################
pool = redis.ConnectionPool(host=REDIS_HOST, port=6379, db=0, decode_responses=True)
redis = redis.Redis(connection_pool=pool)

####################################配置flask_sqlalchemy揷件################################
db = SQLAlchemy()

####################################配置定时任务揷件################################
scheduler_obj = BackgroundScheduler(
    {
        'apscheduler.jobstores.default': {
            'type': 'sqlalchemy',
            'url': SQLALCHEMY_DATABASE_URI
        },
        'apscheduler.executors.default': {
            'class': 'apscheduler.executors.pool:ThreadPoolExecutor',
            'max_workers': '20'
        },
        'apscheduler.executors.processpool': {
            'type': 'processpool',
            'max_workers': '5'
        },
        'apscheduler.job_defaults.coalesce': 'false',
        'apscheduler.job_defaults.max_instances': '3',
        # 这里原来是'apscheduler.timezone': 'UTC'是世界时间，会差8个小时，要注意
        'apscheduler.timezone': 'Asia/Shanghai'
    }
)
